// 导入 vuex 数据管理仓库
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
var car = JSON.parse(localStorage.getItem('car') || '[]');
var store = new Vuex.Store({
    state: {
        car: car
    },
    mutations: {
        // 添加商品到购物车
        addCar(state,goodsInfo){

            var flag = false; // 默认购物车没有这个商品

            // 遍历数组 有的话 就只是数量上的相加
            state.car.some(item=>{
                if (item.id == goodsInfo.id) {
                    item.count += goodsInfo.count;
                    flag = true;
                    return true;
                }
            });
            // 没有就添加
            if (flag == false) {
                state.car.push(goodsInfo);
            }

            // 存储到本地
            localStorage.setItem('car', JSON.stringify(state.car));
        },

        // 购物车变更商品数量时  更新数据到 store
        updateCount(state,goodsInfo){
            console.log(goodsInfo);
            state.car.some(item=>{
                if (item.id == goodsInfo.id) {
                    item.count = parseInt(goodsInfo.count);
                    return true;
                }
            });
            // 同步更新的数据到本地
            localStorage.setItem('car', JSON.stringify(state.car));
        },

        // 点击购物车页面的删除  删除store中对应的数据
        removeStoreDate(state,id) {
            console.log(id);

            // 第一种方法 array.findIndex(function)
            // var index = state.car.findIndex(item=>{
            //     if (item.id == id) {
            //         return true;
            //     }
            // });  
            // state.car.splice(index,1); 

            // 第二种方法 array.some(function)
            state.car.some((item,index)=>{
                if (item.id == id) {
                    state,car.splice(index,1);
                }
                return;
            });
            
            
            // 同步更新的数据到本地
            localStorage.setItem('car', JSON.stringify(state.car));
        },

        // 更新 store 中商品的选中 开关状态
        updateGoodsSelected(state,info){
            state.car.some(item=>{
                if (item.id == info.id) {
                    item.selected = info.selected;
                }
            });
            // 同步更新的数据到本地
            localStorage.setItem('car', JSON.stringify(state.car));
        }
    },
    getters: {
        // 获取购物车所有商品的数量
        getAllCount(state){
            var c = 0;
            state.car.forEach(item=>{
                c += item.count;
            });
            return c;
        },

        // 获取每个商品购买的数量
        getGoodsCount(state){
            var goodsCountObj = {};
            state.car.forEach(item=>{
                goodsCountObj[item.id] = item.count;
            });
            return goodsCountObj;
        },

        // mt-switch的选中状态
        getCheckedStatus(state){
            var o = {};
            state.car.forEach(item=>{
                // {87: true, 88: true, 89: true}
                o[item.id] = item.selected;
            });
            // console.log(o);
            return o;
        },

        getGoodsCountAndAmount(state) {
            var o = {
              count: 0, // 勾选的数量
              amount: 0 // 勾选的总价
            };
            state.car.forEach(item => {
              if (item.selected) {
                o.count += item.count;
                o.amount += item.price * item.count;
              }
            });
            return o;
        }
    }

});

export default store;